package com.example.demo1.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

// @Data 会自动生成getter、setter、toString等方法
@Data
// 全参构造方法
@AllArgsConstructor
// 无参构造方法
@NoArgsConstructor
public class ApiResponse<T> {
    // 状态码，比如200表示成功，404表示资源未找到等
    private int code;
    // 提示信息，如“成功”“图书不存在”等
    private String message;
    // 响应的数据，泛型T可以是List<Book>、Book等各种类型
    private T data;

    // 成功响应的静态方法，带数据返回
    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<>(200, "成功", data);
    }

    // 成功响应的静态方法，无数据返回（比如删除操作成功时）
    public static ApiResponse<Void> success() {
        return new ApiResponse<>(200, "成功", null);
    }

    // 错误响应的静态方法，用于返回错误状态码和提示信息
    public static ApiResponse<Void> error(int code, String message) {
        return new ApiResponse<>(code, message, null);
    }
}